package com.ctb.dao;

import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.MissingResourceException;
import org.apache.log4j.Logger;
import oracle.jdbc.OracleTypes;

import utiles.AppProperties;
import utiles.ConexionPool;

import com.ctb.dto.FacturaPendDTO;

public class FacturaDAO {
	private static Logger log = Logger.getLogger(FacturaDAO.class);
	String pkgVar = (AppProperties.getProperty("aplicacion", "PACKAGE"));
	
	public List<FacturaPendDTO> GetGuiasByIDContrato(String idCliente, String tipoDoc) throws MissingResourceException, IOException, SQLException {
		Connection conn = ConexionPool.getConnectionPool();	
		

		List<FacturaPendDTO> listRetorno = new ArrayList<FacturaPendDTO>();
		try {
			String query = "{ call "+pkgVar+".PKG_CON_FACTURA.getGuiasByIDContrato(?,?,?) }"; 	       
			CallableStatement  stmt = conn.prepareCall(query);
			stmt.setString(1, idCliente);
			stmt.setString(2, tipoDoc);
			stmt.registerOutParameter(3, OracleTypes.CURSOR);
			stmt.execute();
			ResultSet rs = (ResultSet)stmt.getObject(3);
			while (rs.next()) {
				FacturaPendDTO factPendDTO = new FacturaPendDTO();
				factPendDTO.setFolio(rs.getString(1));
				factPendDTO.setFecEmision(rs.getString(2)); 
				factPendDTO.setNetoTotal(rs.getString(3)); 	
				factPendDTO.setIdTipoDoc(rs.getString(4));
				factPendDTO.setTipoDocumento(rs.getString(5));
				listRetorno.add(factPendDTO);				
			}
			rs.close();
			stmt.close();
		} catch (SQLException ex) {  
			log.error("Error FacturaDAO.GetGuiasByIDContrato SQLException: " +ex.getMessage());
			System.out.println(ex.getMessage());
		} finally {			
			conn.close();
			conn = null;
		}
		return listRetorno;		
	}
	/*
	public  List setEnviaDocSII(String idDocumento) throws SQLException, IOException{

		Connection conn = ConexionPool.getConnectionPool();	

		List listRetorno = new ArrayList();
		try {
			String query = "{ call "+pkgVar+".PKG_FAR_GUIA_DESPACHO.setEnviaDocSII(?,?,?) }"; 	       
			CallableStatement  stmt = conn.prepareCall(query);			
			stmt.setString(1, idDocumento);	
			stmt.setString(2, "2");	
			stmt.registerOutParameter(3, OracleTypes.CURSOR);
			stmt.execute();
			ResultSet rs = (ResultSet)stmt.getObject(3);
			while (rs.next()) {
				String respuesta  = rs.getString(1);
				System.out.println("En Factura: Actualizaci�n de env�o al SII: "+respuesta);		
			}
			rs.close();
			stmt.close();
		} catch (SQLException ex) {  
			log.error("Error FacturaDAO.setEnviaDocSII SQLException: " +ex.getMessage());
			System.out.println(ex.getMessage());
		} finally {			
			conn.close();
			conn = null;
			FacturaEnviarDAO factEnv = new FacturaEnviarDAO();
			int enviar = factEnv.envioFactura(idDocumento);		
			if (enviar == 3){
			     // System.out.println("Enviado con Exito al SII");
				 factEnv.setEnviaDocSII(idDocumento, "3");
			  }else if (enviar == 4){
			    // System.out.println("NO Enviado con Exito al SII");
				  factEnv.setEnviaDocSII(idDocumento, "4");
			  }else if (enviar == 5){
			    // System.out.println("ERROR DTE BOX");	  
				  factEnv.setEnviaDocSII(idDocumento, "5");
			  }else if (enviar == 6){
				// System.out.println("ERROR INTERNO REGISTROS BOX");	  
				  factEnv.setEnviaDocSII(idDocumento, "6");
			  }						
		}
		return listRetorno;
	}
*/
	

}
